package model;

import java.awt.Point;

public abstract class Player {
	
	/**
	 * Se a jogada já foi calculada ou executada.
	 */
	private boolean ready;
	
	/**
	 * A jogada que o jogador escolheu.
	 */
	private Point move;

	/**
	 * O tipo de peças que esse jogador vai usar.
	 */
	private PieceType type;
	
	/**
	 * Cria um novo jogador, já dizendo qual peça ele vai usar.
	 */
	public Player(PieceType piece) {
		this.type = piece;
	}
	
	/**
	 * Pede ao jogador que pense / calcule / execute sua jogada.
	 * 
	 * @param board O tabuleiro no estado atual, para ele decidir o que fazer.
	 */
	public abstract void play(Board board);
	
	/**
	 * Escolhe se o jogador já está pronto.
	 */
	public void setReady(boolean ready) {
		this.ready = ready;
	}
	
	/**
	 * Determina a jogada que ele irá executar.
	 */
	public void setMove(Point m) {
		move = m;
	}
	
	/**
	 * Pergunta se o jogador já está pronto.
	 */
	public boolean isReady() {
		return ready;
	}

	/**
	 * Pergunta qual jogada ele irá fazer.
	 */
	public Point getMove() {
		return move;
	}
	
	public PieceType getType() {
		return type;
	}

	public abstract void youWin();

}
